\documentclass[utf8]{ctexart}

\usepackage[a4paper,left=1.25in,right=1.25in,top=1in,bottom=1in]{geometry}
\usepackage{listings}
\usepackage{graphicx}
\usepackage{subfigure}
\usepackage{booktabs}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{float}
\usepackage{indentfirst}
\usepackage{gnuplot-lua-tikz}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\usetikzlibrary{shapes.geometric, arrows}
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage{newclude}
\usepackage[perpage]{footmisc}

\graphicspath{ {../images/} }
\raggedbottom	% 令页面在垂直方向向顶部对齐
\renewcommand\qedsymbol{QED}
\newcommand{\sign}[1]{\mathrm{sgn}(#1)}
\everymath{\displaystyle}   % 行内公式采用行间公式格式排列

\title{第一次上机作业报告}
\author{姓名：殷文良\qquad 学号：3200101893}
\date{}

\begin{document}
\maketitle
\CTEXsetup[format={\Large\bfseries}]{section}

\section{项目设计思路}
在设计双链表时，我们提供了4个类：
\begin{enumerate}
\item
  DoubleLinkedList。这个类包含了对两端的链接，链表的大小以及一系列方法。
\item
  Node。这是一个私有的嵌套类，一个结点包含了该点的数据，指向前结点和后结点的指针，以及适当的构造函数。
\item
  const\_iterator。这是一个公有的嵌套类，抽象了结点位置的表示。这个类存储了指向当前结点的指针current，通过重载运算符实现了基本的迭代器操作。
\item
  iterator。这是一个公有的嵌套类，抽象了结点位置的表示。它继承了const\_iterator，具有与其相同的方法，除了operator*返回的是对被选中的结点的引用，而不是对一个结点的常引用。
\end{enumerate}

\section{测试说明}
\begin{itemize}
\item
  在shell终端输入\verb!make report!，可以得到上机报告report.pdf；
\item
  在shell终端输入\verb!make run!，可以编译并运行C++程序main.cpp，并在终端得到输出结果；
\item
  在shell终端输入\verb!valgrind ./test!，可以检查程序main.cpp的内存泄漏情况。
\end{itemize}

\section{测试结果}
\subsection{程序运行结果}
\begin{figure}[H]
  \centering
  \includegraphics[width=0.650\textwidth,height=0.109\textwidth]{1_1.png}
  \caption{程序运行结果}
  \label{fig1}
\end{figure}

\subsection{内存泄露检查}
\begin{figure}[H]
  \centering
  \includegraphics[width=0.786\textwidth,height=0.360\textwidth]{1_2.png}
  \caption{内存泄漏检查}
  \label{fig2}
\end{figure}

\end{document}
